ЗадачаНа основании существующих запросов (представлений, хранимых функций и процедур, разовых запросов) выделение возможных связей между таблицами (join), также в случае отсутствия внешнего ключа (на основании логики имеющихся запросов приложения).
Алгоритм

0) На вход получаем перечень таблиц.
1) Получение файлов, содержащих необходимые данные sql (скрипты).
2) Для каждого файла:
2.1) Определяем список таблиц, которые упоминаются в данном файле.
3) Отбираем совокупность скриптов, содержащую наименьшее кол-во скриптов при том, что вся совокупность отобранных скриптов покрывает все таблицы из п.0.
4) Выполняем ручной анализ скриптов и построение схемы связей.

Дополнение: если есть возможность, то можно сразу попытаться анализировать выражения from и join, но это сложнее.

 Парсинг SQL запросов
Теги: